Many problems exist when dealing with and or designing small processors of the mini-computer size that don't occur with larger systems. A major problem which must be dealt with constantly is the one of storage capacity or memory size. In a mini-computer, such as a Burroughs B700, there very often is a limited memory storage capacity which must be utilized with efficient discretion so as to permit a maximum amount of storage for user programs and data.
One approach has been to combine microinstruction storage and user code storage into one large or shared memory unit. With this storage arrangment, memory space not used for microinstruction storage may be used for user code. Typically, such shared memory apparatus have the capability for and do keep microprogram memory separate from data or source level memory.
Immediate benefits are bestowed by use of a shared memory in which the boundary separating microprogram storage and user code or S-level storage is movable. Microprogram and S-level memory space may therefore be adjusted as the requirements of the system change, and trade-offs are made to meet a specific application.
It is therefore desirable to have a machine wherein the amount of firmware structured into the machine is only the amount needed to offer the processor capabilities needed to run the user program. Such a machine would require a minimum of microprogram storage space thus freeing more of the shared memory for use by the programmer in running his object program and storing needed data values. This feat may be accomplished by the load time binding of firmware.
With this type of apparatus design considerations occur which do not occur in binding at source language levels. Unlike run time binding of object program definitions and/or program subroutines, load time binding deals with the structuring of system firmware at a time when the user has loaded his object program. This design approach necessitates the construction of a library of all possible firmware modules which may be needed at some time in the operation of the system.
IT IS THEREFORE DESIRABLE THAT FOR A GIVEN USER PROGRAM THE PROCESSING SYSTEM AUTOMATICALLY DECIDE WHAT FIRMWARE CONTROLLERS ARE NEEDED TO RUN THE PROGRAM. It is further desirable that decisional apparatus exist within the processor for loading firmware modules and that the loader be economically reconfigurable by an engineer.
An object of this invention is to provide a loader for a microprogrammable digital processor which is always resident or in existance in the processor, for loading firmware controllers into said processor at user program load time.
Another object of the invention is to provide a loader to which changes may be economically made given the microprogram environment of the processor.
A further object of the invention is to provide a loader which is capable of deciding what firmware modules are to be bound into the system processor (interpreter) to operate upon the particular user program entered.